While initially developed as a means for communicating the online status in instant messaging applications, presence has become a key enabler of Web-based content to provider, enterprise and service provider/telecom converged applications. Presence can also be used as a method of representing and querying the context of an individual, both physical (for example, a user's location) and virtual (for example, the status of avatars in a gaming context). Moreover, presence is used to represent the dynamic attributes of not just individuals, but also devices (for example, the battery level of a cell-phone) and abstract entities (for example, the number of attendees in a conference call). Presence may be broadly described as a publish-subscribe system for context that enables a variety of products and applications. As such, presence embodies the first practical, large-scale adoption of context-aware computing.
With the proliferation of presence, an individual's contextual state is increasingly fragmented across different applications and provider domains. Presence-based applications operate in domain-specific silos, unaware of the individual's presence status in other domains. Obfuscating these traditional barriers between communications service providers, enterprises and Internet content providers would, however, enable a significantly more unified and accurate view of an individual's presence attributes across multiple domains. More generally, future converged applications not only require the presence status from multiple sources/domains, but also effectively operate over derived contextual attributes by applying some processing logic over the raw presence information.
A limited number of existing approaches have been suggested to overcome this limitation. Broadly, they require the presence server to be enhanced to accept programmatic specifications on the computing logic and to instantiate such computing logic on the presence server or an adjunct engine. These approaches, however, suffer from one of the following drawbacks: a) they do not prescribe a standardized way by which computing logic can be specified; b) they do not enable the specification of client computing logic to easily utilize the existing computing logic already instantiated in the presence server or an adjunct server; or c) they do not allow the adjunct server to efficiently utilize the presence infrastructure and mechanisms to respond to such programmatic queries.